package com.ruoyi.common.core.domain.entity.system;

import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseOrder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 套餐计费订单对象 sys_taocan_order
 *
 * @author zjw
 * @date 2023-08-22
 */
public class SysTaocanOrder extends BaseOrder {
    private static final long serialVersionUID = 1L;

    /**
     * 押金和订单费用合并支付的商户订单编号
     */
    @Excel(name = "押金和订单费用合并支付的商户订单编号")
    private String depositAndFeeOutOrderNo;

    /**
     * 押金和订单费用合并支付的微信订单编号
     */
    @Excel(name = "押金和订单费用合并支付的微信订单编号")
    private String depositAndFeeWxOrderNo;
    /**
     * 押金和订单费用合并退款的商户退款编号
     */
    private String depositAndFeeOutRefundNo;
    /**
     * 押金和订单费用合并退款的微信退款编号
     */
    private String depositAndFeeWxRefundNo;

    /**
     * 押金退款的商户退款单号
     */
    @Excel(name = "押金退款的商户退款单号")
    private String depositOutRefundNo;

    /**
     * 押金退款的微信退款单号
     */
    @Excel(name = "押金退款的微信退款单号")
    private String depositWxRefundNo;

    /**
     * 超时费用支付的商户订单编号
     */
    @Excel(name = "超时费用支付的商户订单编号")
    private String overtimeFeeOutOrderNo;

    /**
     * 超时费用支付的微信订单编号
     */
    @Excel(name = "超时费用支付的微信订单编号")
    private String overtimeFeeWxOrderNo;

    /**
     * 超时费用退款的商户退款单号
     */
    @Excel(name = "超时费用退款的商户退款单号")
    private String overtimeFeeOutRefundNo;

    /**
     * 超时费用退款的微信退款单号
     */
    @Excel(name = "超时费用退款的微信退款单号")
    private String overtimeFeeWxRefundNo;

    /**
     * 套餐id。默认为0。
     */
    @Excel(name = "套餐id。默认为0。")
    private Long taocanId;

    /**
     * 套餐包含的游玩时长，单位：分钟。
     */
    private Integer taocanDuration;

    /**
     * 套餐价格，单位：元。
     */
    private Double taocanPrice;

    /**
     * 套餐押金，单位：元。
     */
    private Double taocanDeposit;
    /**
     * 套餐超时计费规则，单位：元/分钟。
     */
    private Double overtimeFeeRule;

    /**
     * 计时规则id。用于计算订单超时费用。
     */
    private Long jishiId;

    /**
     * 价格，单位：元。
     */
    private Double jishiPrice;

    /**
     * 计价单位，默认为0。(0: 元/分钟, 1: 元/30分钟, 2: 元/小时)
     */
    private Integer jishiUnit;

    /**
     * 退款文本描述，示例：用户超时未上船，系统主动退款。
     */
    @Excel(name = "退款文本描述，示例：用户超时未上船，系统主动退款。")
    private String refundDesc;

    /**
     * 订单费用金额，单位：元。
     */
    @Excel(name = "订单费用金额，单位：元。")
    private Double orderFee;

    /**
     * 订单费用支付状态。0：未支付，1：支付中，2：已支付，3：退款中，4: 退款失败，5：已退款
     */
    @Excel(name = "订单费用支付状态。0：未支付，1：支付中，2：已支付，3：退款中，4: 退款失败，5：已退款")
    private Integer feePayStatus;

    /**
     * 订单费用支付状态文本描述。0：未支付，1：支付中，2：已支付，3：退款中，4: 退款失败，5：已退款
     */
    @Excel(name = "订单费用支付状态文本描述。0：未支付，1：支付中，2：已支付，3：退款中，4: 退款失败，5：已退款")
    private String feePayStatusDesc;

    /**
     * 实际支付的订单费用金额，单位：元。
     */
    @Excel(name = "实际支付的订单费用金额，单位：元。")
    private Double realPayFee;

    /**
     * 超时时长，单位：分钟。
     */
    private Integer overtime;

    /**
     * 超时费用金额，单位：元。
     */
    @Excel(name = "超时费用金额，单位：元。")
    private Double overtimeFee;

    /**
     * 超时费用支付状态。0：未支付，1：支付中，2：已支付，3：退款中，4: 退款失败，5：已退款
     */
    @Excel(name = "超时费用支付状态。0：未支付，1：支付中，2：已支付，3：退款中，4: 退款失败，5：已退款")
    private Integer overtimeFeePayStatus;

    /**
     * 超时费用支付状态文本描述。0：未支付，1：支付中，2：已支付，3：退款中，4: 退款失败，5：已退款
     */
    @Excel(name = "超时费用支付状态文本描述。0：未支付，1：支付中，2：已支付，3：退款中，4: 退款失败，5：已退款")
    private String overtimeFeePayStatusDesc;

    /**
     * 实际支付的超时费用金额，单位：元。
     */
    @Excel(name = "实际支付的超时费用金额，单位：元。")
    private Double realPayOvertimeFee;

    /**
     * 订单押金金额，单位：元。
     */
    @Excel(name = "订单押金金额，单位：元。")
    private Double orderDeposit;

    /**
     * 订单押金支付状态。0：未支付，1：支付中，2：已支付，3：退款中，4: 退款失败，5：已退款
     */
    @Excel(name = "订单押金支付状态。0：未支付，1：支付中，2：已支付，3：退款中，4: 退款失败，5：已退款")
    private Integer depositPayStatus;

    /**
     * 订单押金支付状态文本描述。0：未支付，1：支付中，2：已支付，3：退款中，4: 退款失败，5：已退款
     */
    @Excel(name = "订单押金支付状态文本描述。0：未支付，1：支付中，2：已支付，3：退款中，4: 退款失败，5：已退款")
    private String depositPayStatusDesc;

    /**
     * 实际支付的订单押金金额，单位：元。
     */
    @Excel(name = "实际支付的订单押金金额，单位：元。")
    private Double realPayDeposit;

    /**
     * 订单总金额(订单费用+押金)，单位：元。
     */
    @Excel(name = "订单总金额(订单费用+押金)，单位：元。")
    private Double orderTotalPrice;

    /**
     * 用户已实际支付的订单总金额(订单费用+押金)，单位：分。
     */
    @Excel(name = "用户已实际支付的订单总金额(订单费用+押金)，单位：分。")
    private Double realPayTotalPrice;

    /**
     * 订单费用的支付方式。0：未支付，1：微信支付，2：支付宝，3：银行卡。
     */
    @Excel(name = "订单费用的支付方式。0：未支付，1：微信支付，2：支付宝，3：银行卡。")
    private Integer feePayMethod;

    /**
     * 订单费用支付方式的文字描述。如：“微信零钱支付”等。
     */
    @Excel(name = "订单费用支付方式的文字描述。如：“微信零钱支付”等。")
    private String feePayMethodDesc;

    /**
     * 订单押金的支付方式。0：未支付，1：微信支付，2：支付宝，3：银行卡。
     */
    @Excel(name = "订单押金的支付方式。0：未支付，1：微信支付，2：支付宝，3：银行卡。")
    private Integer depositPayMethod;

    /**
     * 订单押金支付方式的文字描述。如：“微信零钱支付”等。
     */
    @Excel(name = "订单押金支付方式的文字描述。如：“微信零钱支付”等。")
    private String depositPayMethodDesc;

    /**
     * 退款金额，单位：元。
     */
    @Excel(name = "退款金额，单位：元。")
    private Double refundAmount;

    /**
     * 退款失败原因。
     */
    @Excel(name = "退款失败原因。")
    private String refundFailReason;

    public Double getOvertimeFeeRule() {
        return overtimeFeeRule;
    }

    public void setOvertimeFeeRule(Double overtimeFeeRule) {
        this.overtimeFeeRule = overtimeFeeRule;
    }

    public Integer getOvertime() {
        return overtime;
    }

    public void setOvertime(Integer overtime) {
        this.overtime = overtime;
    }

    public Integer getTaocanDuration() {
        return taocanDuration;
    }

    public void setTaocanDuration(Integer taocanDuration) {
        this.taocanDuration = taocanDuration;
    }

    public Double getTaocanPrice() {
        return taocanPrice;
    }

    public void setTaocanPrice(Double taocanPrice) {
        this.taocanPrice = taocanPrice;
    }

    public Double getTaocanDeposit() {
        return taocanDeposit;
    }

    public void setTaocanDeposit(Double taocanDeposit) {
        this.taocanDeposit = taocanDeposit;
    }

    public Long getJishiId() {
        return jishiId;
    }

    public void setJishiId(Long jishiId) {
        this.jishiId = jishiId;
    }

    public Double getJishiPrice() {
        return jishiPrice;
    }

    public void setJishiPrice(Double jishiPrice) {
        this.jishiPrice = jishiPrice;
    }

    public Integer getJishiUnit() {
        return jishiUnit;
    }

    public void setJishiUnit(Integer jishiUnit) {
        this.jishiUnit = jishiUnit;
    }

    public String getDepositAndFeeOutRefundNo() {
        return depositAndFeeOutRefundNo;
    }

    public void setDepositAndFeeOutRefundNo(String depositAndFeeOutRefundNo) {
        this.depositAndFeeOutRefundNo = depositAndFeeOutRefundNo;
    }

    public String getDepositAndFeeWxRefundNo() {
        return depositAndFeeWxRefundNo;
    }

    public void setDepositAndFeeWxRefundNo(String depositAndFeeWxRefundNo) {
        this.depositAndFeeWxRefundNo = depositAndFeeWxRefundNo;
    }

    public Double getOvertimeFee() {
        return overtimeFee;
    }

    public void setOvertimeFee(Double overtimeFee) {
        this.overtimeFee = overtimeFee;
    }

    public void setDepositAndFeeOutOrderNo(String depositAndFeeOutOrderNo) {
        this.depositAndFeeOutOrderNo = depositAndFeeOutOrderNo;
    }

    public String getDepositAndFeeOutOrderNo() {
        return depositAndFeeOutOrderNo;
    }

    public void setDepositAndFeeWxOrderNo(String depositAndFeeWxOrderNo) {
        this.depositAndFeeWxOrderNo = depositAndFeeWxOrderNo;
    }

    public String getDepositAndFeeWxOrderNo() {
        return depositAndFeeWxOrderNo;
    }

    public void setDepositOutRefundNo(String depositOutRefundNo) {
        this.depositOutRefundNo = depositOutRefundNo;
    }

    public String getDepositOutRefundNo() {
        return depositOutRefundNo;
    }

    public void setDepositWxRefundNo(String depositWxRefundNo) {
        this.depositWxRefundNo = depositWxRefundNo;
    }

    public String getDepositWxRefundNo() {
        return depositWxRefundNo;
    }

    public void setOvertimeFeeOutOrderNo(String overtimeFeeOutOrderNo) {
        this.overtimeFeeOutOrderNo = overtimeFeeOutOrderNo;
    }

    public String getOvertimeFeeOutOrderNo() {
        return overtimeFeeOutOrderNo;
    }

    public void setOvertimeFeeWxOrderNo(String overtimeFeeWxOrderNo) {
        this.overtimeFeeWxOrderNo = overtimeFeeWxOrderNo;
    }

    public String getOvertimeFeeWxOrderNo() {
        return overtimeFeeWxOrderNo;
    }

    public void setOvertimeFeeOutRefundNo(String overtimeFeeOutRefundNo) {
        this.overtimeFeeOutRefundNo = overtimeFeeOutRefundNo;
    }

    public String getOvertimeFeeOutRefundNo() {
        return overtimeFeeOutRefundNo;
    }

    public void setOvertimeFeeWxRefundNo(String overtimeFeeWxRefundNo) {
        this.overtimeFeeWxRefundNo = overtimeFeeWxRefundNo;
    }

    public String getOvertimeFeeWxRefundNo() {
        return overtimeFeeWxRefundNo;
    }

    public void setTaocanId(Long taocanId) {
        this.taocanId = taocanId;
    }

    public Long getTaocanId() {
        return taocanId;
    }

    public void setRefundDesc(String refundDesc) {
        this.refundDesc = refundDesc;
    }

    public String getRefundDesc() {
        return refundDesc;
    }

    public void setOrderFee(Double orderFee) {
        this.orderFee = orderFee;
    }

    public Double getOrderFee() {
        return orderFee;
    }

    public void setFeePayStatus(Integer feePayStatus) {
        this.feePayStatus = feePayStatus;
    }

    public Integer getFeePayStatus() {
        return feePayStatus;
    }

    public void setFeePayStatusDesc(String feePayStatusDesc) {
        this.feePayStatusDesc = feePayStatusDesc;
    }

    public String getFeePayStatusDesc() {
        return feePayStatusDesc;
    }

    public void setRealPayFee(Double realPayFee) {
        this.realPayFee = realPayFee;
    }

    public Double getRealPayFee() {
        return realPayFee;
    }

    public void setOvertimeFeePayStatus(Integer overtimeFeePayStatus) {
        this.overtimeFeePayStatus = overtimeFeePayStatus;
    }

    public Integer getOvertimeFeePayStatus() {
        return overtimeFeePayStatus;
    }

    public void setOvertimeFeePayStatusDesc(String overtimeFeePayStatusDesc) {
        this.overtimeFeePayStatusDesc = overtimeFeePayStatusDesc;
    }

    public String getOvertimeFeePayStatusDesc() {
        return overtimeFeePayStatusDesc;
    }

    public void setRealPayOvertimeFee(Double realPayOvertimeFee) {
        this.realPayOvertimeFee = realPayOvertimeFee;
    }

    public Double getRealPayOvertimeFee() {
        return realPayOvertimeFee;
    }

    public void setOrderDeposit(Double orderDeposit) {
        this.orderDeposit = orderDeposit;
    }

    public Double getOrderDeposit() {
        return orderDeposit;
    }

    public void setDepositPayStatus(Integer depositPayStatus) {
        this.depositPayStatus = depositPayStatus;
    }

    public Integer getDepositPayStatus() {
        return depositPayStatus;
    }

    public void setDepositPayStatusDesc(String depositPayStatusDesc) {
        this.depositPayStatusDesc = depositPayStatusDesc;
    }

    public String getDepositPayStatusDesc() {
        return depositPayStatusDesc;
    }

    public void setRealPayDeposit(Double realPayDeposit) {
        this.realPayDeposit = realPayDeposit;
    }

    public Double getRealPayDeposit() {
        return realPayDeposit;
    }

    public void setOrderTotalPrice(Double orderTotalPrice) {
        this.orderTotalPrice = orderTotalPrice;
    }

    public Double getOrderTotalPrice() {
        return orderTotalPrice;
    }

    public void setRealPayTotalPrice(Double realPayTotalPrice) {
        this.realPayTotalPrice = realPayTotalPrice;
    }

    public Double getRealPayTotalPrice() {
        return realPayTotalPrice;
    }

    public void setFeePayMethod(Integer feePayMethod) {
        this.feePayMethod = feePayMethod;
    }

    public Integer getFeePayMethod() {
        return feePayMethod;
    }

    public void setFeePayMethodDesc(String feePayMethodDesc) {
        this.feePayMethodDesc = feePayMethodDesc;
    }

    public String getFeePayMethodDesc() {
        return feePayMethodDesc;
    }

    public void setDepositPayMethod(Integer depositPayMethod) {
        this.depositPayMethod = depositPayMethod;
    }

    public Integer getDepositPayMethod() {
        return depositPayMethod;
    }

    public void setDepositPayMethodDesc(String depositPayMethodDesc) {
        this.depositPayMethodDesc = depositPayMethodDesc;
    }

    public String getDepositPayMethodDesc() {
        return depositPayMethodDesc;
    }

    public void setRefundAmount(Double refundAmount) {
        this.refundAmount = refundAmount;
    }

    public Double getRefundAmount() {
        return refundAmount;
    }

    public void setRefundFailReason(String refundFailReason) {
        this.refundFailReason = refundFailReason;
    }

    public String getRefundFailReason() {
        return refundFailReason;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("orderId", getOrderId())
                .append("scenicId", getScenicId())
                .append("scenicName", getScenicName())
                .append("wharfId", getWharfId())
                .append("wharfName", getWharfName())
                .append("boatId", getBoatId())
                .append("boatCode", getBoatCode())
                .append("depositAndFeeOutOrderNo", getDepositAndFeeOutOrderNo())
                .append("depositAndFeeWxOrderNo", getDepositAndFeeWxOrderNo())
                .append("depositOutRefundNo", getDepositOutRefundNo())
                .append("depositWxRefundNo", getDepositWxRefundNo())
                .append("overtimeFeeOutOrderNo", getOvertimeFeeOutOrderNo())
                .append("overtimeFeeWxOrderNo", getOvertimeFeeWxOrderNo())
                .append("overtimeFeeOutRefundNo", getOvertimeFeeOutRefundNo())
                .append("overtimeFeeWxRefundNo", getOvertimeFeeWxRefundNo())
                .append("orderType", getOrderType())
                .append("taocanId", getTaocanId())
                .append("orderStatus", getOrderStatus())
                .append("orderStatusDesc", getOrderStatusDesc())
                .append("orderDesc", getOrderDesc())
                .append("refundDesc", getRefundDesc())
                .append("orderFee", getOrderFee())
                .append("feePayStatus", getFeePayStatus())
                .append("feePayStatusDesc", getFeePayStatusDesc())
                .append("realPayFee", getRealPayFee())
                .append("overtimeFee", getOvertimeFee())
                .append("overtimeFeePayStatus", getOvertimeFeePayStatus())
                .append("overtimeFeePayStatusDesc", getOvertimeFeePayStatusDesc())
                .append("realPayOvertimeFee", getRealPayOvertimeFee())
                .append("orderDeposit", getOrderDeposit())
                .append("depositPayStatus", getDepositPayStatus())
                .append("depositPayStatusDesc", getDepositPayStatusDesc())
                .append("realPayDeposit", getRealPayDeposit())
                .append("orderTotalPrice", getOrderTotalPrice())
                .append("realPayTotalPrice", getRealPayTotalPrice())
                .append("feePayMethod", getFeePayMethod())
                .append("feePayMethodDesc", getFeePayMethodDesc())
                .append("depositPayMethod", getDepositPayMethod())
                .append("depositPayMethodDesc", getDepositPayMethodDesc())
                .append("refundAmount", getRefundAmount())
                .append("refundFailReason", getRefundFailReason())
                .append("userId", getUserId())
                .append("realDuration", getRealDuration())
                .append("createTime", getCreateTime())
                .append("beginTime", getBeginTime())
                .append("endTime", getEndTime())
                .append("closedTime", getClosedTime())
                .append("remark", getRemark())
                .toString();
    }
}
